; Music of Cerberus (1986) (Players)
; Ripped by Megachur the 07/02/2009

; Need System Vectors

	write "CERBERUS.BIN"

music_date_rip	equ &0729
music_adr	equ &9c00
first_theme	equ 0
last_theme	equ 2	; 0 -> 2

	read "music_header_v1_0.asm"

	jr l9c1e	; init music
	jr l9c26	; init music
	jr l9c16	; init music
	jr l9c0d	; stop music
	ld a,(l9d25)
	or a
	ret
.l9c0d
	ld hl,l9cd9
	call #bcdd
	jp #bca7
;
.init_music0
;
.l9c16
	ld iy,l9ef1
	xor a
	jp l9cb9
;
.init_music1
.l9c1e
;
	ld iy,l9d9f
	xor a
	jp l9cb9
;
.init_music2
.l9c26
;
	ld iy,l9eeb
	xor a
	jp l9cb9
.l9c2e
	ld a,#44
	call #bb1e
	jr nz,l9c3a
	xor a
	ld (l9c4c),a
	ret
.l9c3a
	ld a,(l9c4c)
	or a
	ret nz
	inc a
	ld (l9c4c),a
	ld a,(l9c4d)
	xor #ff
	ld (l9c4d),a
	ret
.l9c4e equ $ + 2
.l9c4d equ $ + 1
.l9c4c
	db #00,#00,#00,#6b,#9f,#01,#09,#09
	db #7f,#00,#00,#0f,#90,#00,#00,#00
	db #0f,#01,#09,#00,#f1,#9f,#04,#09
	db #09,#7b,#01,#00,#0d,#90,#00,#00
	db #00,#0d,#01,#09,#00,#7d,#a0,#02
	db #09,#09,#fc,#04,#00,#0d,#60,#00
	db #00,#00,#0d,#01,#09
.l9c81
	ld ix,l9c4e
	ld iy,(l9cd6)
	ld de,#0011
	ld a,#01
	ld (l9d24),a
	ld a,#03
	ld (l9d25),a
	ld b,#03
.l9c98
	ld l,(iy+#00)
	ld h,(iy+#01)
	inc iy
	inc iy
	ld (ix+#01),l
	ld (ix+#02),h
	ld (ix+#00),#01
	set 0,(ix+#00)
	ld (ix+#0f),#01
	add ix,de
	djnz l9c98
	ret
.l9cb9
	ld (l9cd6),iy
	ld (l9cd8),a
	call l9c0d
	call l9c81
	call #bca7
	ld hl,l9cd9
	ld de,l9ce5
	ld bc,#81ff
	call #bcd7
	ret
.l9cd6
	dw l9eeb
.l9cd9 equ $ + 1
.l9cd8
	db #00,#00,#00,#55,#00,#00,#81,#e5
	db #9c,#ff,#00,#00,#00
;
.play_music
;
.l9ce5
	push ix
	call l9c2e
	ld hl,l9d24
	dec (hl)
	jr nz,l9d20
	ld a,(l9d23)
	ld (hl),a
	ld ix,l9c4e
	ld de,#0011
	ld b,#03
.l9cfd
	push de
	push bc
	bit 0,(ix+#00)
	call nz,l9d39
	pop bc
	pop de
	add ix,de
	djnz l9cfd
	ld a,(l9d25)
	or a
	jr nz,l9d20
	ld a,(l9cd8)
	or a
	jr z,l9d1d
	call l9c81
	jr l9d20
.l9d1d
	call l9c0d
.l9d20
	pop ix
	ret
.l9d25 equ $ + 2
.l9d24 equ $ + 1
.l9d23
	db #03,#03,#00
.l9d26
	res 0,(ix+#00)
	ld hl,l9d25
	dec (hl)
	ret
.l9d2f
	ld (ix+#09),#00
	ld (ix+#04),#00
	jr l9d79
.l9d39
	dec (ix+#0f)
	ret nz
	ld e,(ix+#01)
	ld d,(ix+#02)
	ld a,(de)
	ld (ix+#0f),a
	ld b,a
	inc de
	ld a,(de)
	inc de
	ld (ix+#01),e
	ld (ix+#02),d
	cp #ff
	jr z,l9d26
	or a
	jr z,l9d58
.l9d58
	ld e,(ix+#0e)
	ld (ix+#09),e
	ld e,(ix+#10)
	ld (ix+#04),e
	ld e,a
	ld d,#00
	ld hl,l9da5
	add hl,de
	add hl,de
	ld a,(hl)
	ld c,a
	ld (ix+#06),a
	inc hl
	ld a,(hl)
	ld (ix+#07),a
	or c
	jr z,l9d2f
.l9d79
	ld e,b
	ld d,#00
	ld hl,#0000
	ld a,(l9d23)
	ld b,a
.l9d83
	add hl,de
	djnz l9d83
	add hl,hl
	ld (ix+#0a),l
	ld (ix+#0b),h
	push ix
	push ix
	pop hl
	inc hl
	inc hl
	inc hl
	ld a,(l9c4d)
	or a
	call z,#bcaa
	pop ix
	ret
.l9d9f
	dw l9ead,l9e4d,l9e6b
.l9da5
	dw #0000,#0e18,#0d4d,#0c8e
	dw #0bda,#0b2f,#0a8f,#09f7
	dw #0968,#08e1,#0861,#07e9
	dw #0777,#070c,#06a7,#0647
	dw #05ed,#0598,#0547,#04fc
	dw #04b4,#0470,#0431,#03f4
	dw #03bc,#0386,#0353,#0324
	dw #02f6,#02cc,#02a4,#027e
	dw #025a,#0238,#0218,#01fa
	dw #01de,#01c3,#01aa,#0192
	dw #017b,#0166,#0152,#013f
	dw #012d,#011c,#010c,#00fd
	dw #00ef,#00e1,#00d5,#00c9
	dw #00be,#00b3,#00a9,#009f
	dw #0096,#008e,#0086,#007f
	dw #0077,#0071,#006a,#0064
	dw #005f,#0059,#0054,#0050
	dw #004b,#0047,#0043,#003f
	dw #003c,#0038,#0035,#0032
	dw #002f,#002d,#002a,#0028
	dw #0026,#0024,#0022,#0020
.l9e4d
	db #20,#24,#18,#1f,#08,#23,#10,#24
	db #10,#1f,#10,#24,#10,#23,#20,#24
	db #18,#1f,#08,#23,#10,#24,#10,#1f
.l9e6b equ $ + 6
	db #10,#29,#10,#28,#01,#ff,#08,#0c
	db #08,#0c,#08,#0e,#08,#10,#08,#10
	db #08,#0e,#08,#0c,#08,#13,#08,#10
	db #08,#10,#08,#0e,#08,#0c,#08,#13
	db #08,#13,#08,#13,#08,#13,#08,#0c
	db #08,#0c,#08,#0e,#08,#10,#08,#10
	db #08,#0e,#08,#0c,#08,#13,#08,#10
	db #08,#10,#08,#0e,#08,#0c,#08,#17
	db #08,#13,#08,#18,#08,#18,#01,#ff
.l9ead
	db #08,#34,#08,#34,#08,#35,#08,#37
	db #08,#37,#08,#35,#08,#34,#08,#32
	db #08,#30,#08,#30,#08,#32,#08,#34
	db #0c,#34,#04,#32,#10,#32,#08,#34
	db #08,#34,#08,#35,#08,#37,#08,#37
	db #08,#35,#08,#34,#08,#32,#08,#30
	db #08,#30,#08,#32,#08,#34,#0c,#32
	db #04,#30,#10,#30,#01,#ff
.l9ef1 equ $ + 6
.l9eeb
	dw l9ef7,l9fbd,la041,l9f6b
	dw l9ff1,la07d
.l9ef7
	db #18,#39,#04,#39,#04,#38,#18,#34
	db #04,#34,#04,#30,#04,#2d,#02,#39
	db #02,#38,#04,#34,#02,#34,#02,#30
	db #04,#2d,#02,#2d,#02,#2c,#04,#28
	db #02,#28,#02,#24,#20,#21,#02,#00
	db #02,#24,#02,#28,#02,#2d,#02,#00
	db #02,#28,#02,#2d,#02,#30,#02,#00
	db #02,#2d,#02,#30,#02,#34,#02,#00
	db #02,#30,#02,#34,#02,#39,#02,#00
	db #02,#28,#02,#2d,#02,#30,#02,#00
	db #02,#2d,#02,#30,#02,#34,#02,#00
	db #02,#30,#02,#34,#02,#39,#02,#00
	db #02,#34,#02,#39,#02,#3c,#06,#00
	db #02,#2d,#18,#35,#06,#00,#02,#2f
.l9f6b equ $ + 4
	db #18,#3b,#01,#ff,#08,#28,#06,#29
	db #02,#2b,#04,#29,#04,#28,#08,#00
	db #06,#28,#02,#29,#04,#29,#04,#2b
	db #08,#28,#08,#00,#08,#2b,#06,#2d
	db #02,#2f,#04,#2d,#04,#2b,#08,#00
	db #06,#2b,#02,#2d,#04,#2d,#04,#2f
	db #10,#2b,#08,#28,#08,#29,#10,#2f
	db #08,#2d,#08,#2e,#10,#34,#08,#35
	db #08,#34,#04,#2d,#02,#2f,#02,#30
	db #04,#2f,#04,#32,#0c,#2c,#04,#2d
.l9fbd equ $ + 6
	db #08,#30,#08,#2f,#01,#ff,#18,#28
	db #08,#00,#18,#28,#08,#00,#04,#24
	db #04,#00,#04,#22,#04,#00,#04,#24
	db #04,#00,#04,#22,#04,#00,#20,#21
	db #08,#15,#08,#18,#08,#1c,#08,#21
	db #08,#18,#08,#1c,#08,#21,#08,#24
	db #08,#00,#18,#26,#08,#00,#18,#28
.l9ff1 equ $ + 2
	db #01,#ff,#08,#24,#08,#26,#04,#26
	db #04,#24,#04,#26,#04,#28,#08,#24
	db #08,#26,#06,#24,#02,#26,#04,#26
	db #04,#28,#08,#24,#08,#24,#04,#24
	db #04,#24,#04,#21,#04,#23,#08,#24
	db #04,#24,#04,#24,#06,#1f,#02,#21
	db #04,#21,#04,#23,#08,#1e,#08,#21
	db #10,#26,#08,#24,#08,#26,#10,#22
	db #08,#26,#08,#24,#08,#26,#08,#26
	db #08,#27,#08,#28,#08,#27,#08,#26
.la041 equ $ + 2
	db #01,#ff,#08,#15,#08,#15,#08,#15
	db #08,#15,#08,#10,#08,#10,#08,#10
	db #08,#10,#04,#15,#04,#00,#04,#10
	db #04,#00,#04,#15,#04,#00,#04,#10
	db #04,#00,#04,#15,#04,#00,#04,#15
	db #04,#00,#04,#15,#04,#00,#04,#15
	db #04,#00,#04,#15,#3c,#00,#20,#15
.la07d equ $ + 6
	db #10,#12,#10,#13,#01,#ff,#08,#15
	db #08,#15,#08,#15,#08,#15,#08,#15
	db #08,#15,#08,#15,#08,#15,#08,#18
	db #08,#18,#08,#18,#08,#18,#08,#18
	db #08,#18,#08,#18,#04,#18,#04,#17
	db #08,#10,#08,#0e,#08,#12,#08,#13
	db #08,#15,#08,#13,#08,#0d,#08,#0c
	db #08,#15,#08,#15,#08,#11,#08,#11
	db #08,#11,#08,#11,#08,#10,#08,#10
	db #01,#ff
;
.init_music	; added by Megachur
;
	push af
	call l9c0d ; stop music
	pop af
	or a
	jp z,init_music0
	dec a
	jp z,init_music1
	jp init_music2
;
.game_name
	db "Cerberus",0
.game_year
	db "1986",0
.game_publisher
	db "Players",0
.music_author
	db "",0
.music_comment
	db "",0

	read "music_end_v1_0.asm"
